package lib

import (
	"goloader"
	"image"
)

// Ptrimage 设置image库指针
func Ptrimage(symPtr map[string]uintptr) {
	// const
	goloader.RegTypes(symPtr,
		image.YCbCrSubsampleRatio(0),
	)
	// var
	goloader.RegTypes(symPtr,
		image.Black,
		image.ErrFormat,
		image.ZP,
		image.ZR,
	)
	// func
	goloader.RegFunc(symPtr, "image.RegisterFormat", image.RegisterFormat)
	goloader.RegFunc(symPtr, "image.NewAlpha", image.NewAlpha)
	goloader.RegFunc(symPtr, "image.NewAlpha16", image.NewAlpha16)
	goloader.RegFunc(symPtr, "image.NewCMYK", image.NewCMYK)
	goloader.RegFunc(symPtr, "image.DecodeConfig", image.DecodeConfig)
	goloader.RegFunc(symPtr, "image.NewGray", image.NewGray)
	goloader.RegFunc(symPtr, "image.NewGray16", image.NewGray16)
	goloader.RegFunc(symPtr, "image.Decode", image.Decode)
	goloader.RegFunc(symPtr, "image.NewNRGBA", image.NewNRGBA)
	goloader.RegFunc(symPtr, "image.NewNRGBA64", image.NewNRGBA64)
	goloader.RegFunc(symPtr, "image.NewNYCbCrA", image.NewNYCbCrA)
	goloader.RegFunc(symPtr, "image.NewPaletted", image.NewPaletted)
	goloader.RegFunc(symPtr, "image.Pt", image.Pt)
	goloader.RegFunc(symPtr, "image.NewRGBA", image.NewRGBA)
	goloader.RegFunc(symPtr, "image.NewRGBA64", image.NewRGBA64)
	goloader.RegFunc(symPtr, "image.Rect", image.Rect)
	goloader.RegFunc(symPtr, "image.NewUniform", image.NewUniform)
	goloader.RegFunc(symPtr, "image.NewYCbCr", image.NewYCbCr)
	// type
	{
		p := new(image.Alpha)
		goloader.RegTypes(symPtr, p,
			p.AlphaAt,
			p.At,
			p.Bounds,
			p.ColorModel,
			p.Opaque,
			p.PixOffset,
			p.Set,
			p.SetAlpha,
			p.SubImage,
		)
	}
	{
		p := new(image.Alpha16)
		goloader.RegTypes(symPtr, p,
			p.Alpha16At,
			p.At,
			p.Bounds,
			p.ColorModel,
			p.Opaque,
			p.PixOffset,
			p.Set,
			p.SetAlpha16,
			p.SubImage,
		)
	}
	{
		p := new(image.CMYK)
		goloader.RegTypes(symPtr, p,
			p.At,
			p.Bounds,
			p.CMYKAt,
			p.ColorModel,
			p.Opaque,
			p.PixOffset,
			p.Set,
			p.SetCMYK,
			p.SubImage,
		)
	}
	{
		p := new(image.Gray)
		goloader.RegTypes(symPtr, p,
			p.At,
			p.Bounds,
			p.ColorModel,
			p.GrayAt,
			p.Opaque,
			p.PixOffset,
			p.Set,
			p.SetGray,
			p.SubImage,
		)
	}
	{
		p := new(image.Gray16)
		goloader.RegTypes(symPtr, p,
			p.At,
			p.Bounds,
			p.ColorModel,
			p.Gray16At,
			p.Opaque,
			p.PixOffset,
			p.Set,
			p.SetGray16,
			p.SubImage,
		)
	}
	{
		p := new(image.NRGBA)
		goloader.RegTypes(symPtr, p,
			p.At,
			p.Bounds,
			p.ColorModel,
			p.NRGBAAt,
			p.Opaque,
			p.PixOffset,
			p.Set,
			p.SetNRGBA,
			p.SubImage,
		)
	}
	{
		p := new(image.NRGBA64)
		goloader.RegTypes(symPtr, p,
			p.At,
			p.Bounds,
			p.ColorModel,
			p.NRGBA64At,
			p.Opaque,
			p.PixOffset,
			p.Set,
			p.SetNRGBA64,
			p.SubImage,
		)
	}
	{
		p := new(image.NYCbCrA)
		goloader.RegTypes(symPtr, p,
			p.AOffset,
			p.At,
			p.ColorModel,
			p.NYCbCrAAt,
			p.Opaque,
			p.SubImage,
		)
	}
	{
		p := new(image.Paletted)
		goloader.RegTypes(symPtr, p,
			p.At,
			p.Bounds,
			p.ColorIndexAt,
			p.ColorModel,
			p.Opaque,
			p.PixOffset,
			p.Set,
			p.SetColorIndex,
			p.SubImage,
		)
	}
	{
		p := new(image.Point)
		goloader.RegTypes(symPtr, p,
			p.Add,
			p.Div,
			p.Eq,
			p.In,
			p.Mod,
			p.Mul,
			p.String,
			p.Sub,
		)
	}
	{
		p := new(image.RGBA)
		goloader.RegTypes(symPtr, p,
			p.At,
			p.Bounds,
			p.ColorModel,
			p.Opaque,
			p.PixOffset,
			p.RGBAAt,
			p.Set,
			p.SetRGBA,
			p.SubImage,
		)
	}
	{
		p := new(image.RGBA64)
		goloader.RegTypes(symPtr, p,
			p.At,
			p.Bounds,
			p.ColorModel,
			p.Opaque,
			p.PixOffset,
			p.RGBA64At,
			p.Set,
			p.SetRGBA64,
			p.SubImage,
		)
	}
	{
		p := new(image.Rectangle)
		goloader.RegTypes(symPtr, p,
			p.Add,
			p.At,
			p.Bounds,
			p.Canon,
			p.ColorModel,
			p.Dx,
			p.Dy,
			p.Empty,
			p.Eq,
			p.In,
			p.Inset,
			p.Intersect,
			p.Overlaps,
			p.Size,
			p.String,
			p.Sub,
			p.Union,
		)
	}
	{
		p := new(image.Uniform)
		goloader.RegTypes(symPtr, p,
			p.At,
			p.Bounds,
			p.ColorModel,
			p.Convert,
			p.Opaque,
			p.RGBA,
		)
	}
	{
		p := new(image.YCbCr)
		goloader.RegTypes(symPtr, p,
			p.At,
			p.Bounds,
			p.COffset,
			p.ColorModel,
			p.Opaque,
			p.SubImage,
			p.YCbCrAt,
			p.YOffset,
		)
	}
	{
		p := new(image.YCbCrSubsampleRatio)
		goloader.RegTypes(symPtr, p,
			p.String,
		)
	}
}
